# Vectara


Vectara 是什么？

**Vectara 概述：**
- Vectara 是一个为构建 GenAI 应用程序而设计的开发人员优先的 API 平台
- 要使用 Vectara - 首先 [注册](https://console.vectara.com/signup) 并创建一个帐户。然后创建一个语料库和一个用于索引和搜索的 API 密钥。
- 您可以使用 Vectara 的 [indexing API](https://docs.vectara.com/docs/indexing-apis/indexing) 将文档添加到 Vectara 的索引中
- 您可以使用 Vectara 的 [Search API](https://docs.vectara.com/docs/search-apis/search) 查询 Vectara 的索引（还隐式支持混合搜索）。
- 您可以使用 Vectara 与 LangChain 集成作为向量存储或使用 Retriever 抽象。

## 安装和设置
要使用 Vectara 与 LangChain，不需要任何特殊的安装步骤。您只需要提供在 Vectara 控制台中创建的 customer_id、corpus ID 和 API 密钥即可启用索引和搜索。

或者，这些可以作为环境变量提供
- export `VECTARA_CUSTOMER_ID` = "your_customer_id"
- export `VECTARA_CORPUS_ID` = "your_corpus_id"
- export `VECTARA_API_KEY` = "your-vectara-api-key"

## 使用方法

### VectorStore

存在一个围绕 Vectara 平台的包装器，允许您将其用作向量存储，无论是用于语义搜索还是示例选择。

要导入此向量存储：
```python
from langchain.vectorstores import Vectara
```

要创建 Vectara 向量存储的实例：
```python
vectara = Vectara(
    vectara_customer_id=customer_id, 
    vectara_corpus_id=corpus_id, 
    vectara_api_key=api_key
)
```
customer_id、corpus_id 和 api_key 是可选的，如果不提供，将从环境变量 `VECTARA_CUSTOMER_ID`、`VECTARA_CORPUS_ID` 和 `VECTARA_API_KEY` 中读取。

要查询向量存储，您可以使用 `similarity_search` 方法（或 `similarity_search_with_score`），它接受一个查询字符串并返回结果列表：
```python
results = vectara.similarity_score("what is LangChain?")
```

`similarity_search_with_score` 还支持以下其他参数：
- `k`：要返回的结果数量（默认为 5）
- `lambda_val`：混合搜索的 [词法匹配](https://docs.vectara.com/docs/api-reference/search-apis/lexical-matching) 因子（默认为 0.025）
- `filter`：要应用于结果的 [过滤器](https://docs.vectara.com/docs/common-use-cases/filtering-by-metadata/filter-overview)（默认为 None）
- `n_sentence_context`：返回结果时包括实际匹配段前/后的句子数量。默认为 0，以返回与之匹配的确切文本段，但可以与其他值（例如 2 或 3）一起使用，以返回相邻的文本段。

结果以相关文档的列表和每个文档的相关度分数返回。


有关使用 Vectara 包装器的更详细示例，请参阅以下两个示例笔记本之一：
* [Chat Over Documents with Vectara](./vectara/vectara_chat.html)
* [Vectara Text Generation](./vectara/vectara_text_generation.html)


